Description
给定一 $n*m$ 的网格图。每条边有一个流量,兔子从左上角 $(1,1)$ 跑到右下角 $(n,m)$。流量为 $k$ 的边需要 $k$ 匹狼才能堵住。
求把兔子一网打尽所需的最少的狼。
如图:
数据范围:$n,m<=1000$
Solution
首先想到的是最大流 $=$ 最小割,可以跑一遍网络流。$TLE$。还有一个定理:平面图的最大流 $=$ 其对偶图的最短路。建对偶图,然后跑 $dijkstra+$ 堆优化。
平面图
一边只在顶点处相交的图(其边不存在交叉)
对偶图
定义
对于每一个平面图, 都有与其相对应的对偶图。假设上面的例图是 $G$,与其对应的对偶图为 $G’$,那么对于 $G’$ 上面的每一个点, 对应的是 $G$ 里面的每一个面。
构建方式
如图。对于每条边,用一条 垂直于 它的边连接对应的两个点(面)
Code
1 |
|